-- Lua 基础数据类型

--[===[

-- 函数 type 能够返回一个值或一个变量所属的类型
-- string
print(type("hello world"))

-- function
print(type(print))

-- boolean
print(type(true))

-- number
print(type(360.0))

-- nil
print(type(nil))


-- nil （空）
-- nil 是一种类型，nil 表示 无效值，一个变量在赋值前是 nil, 将 nil 赋值给一个全局变量就等于删除它


local num

print(num)

num = 10
print(num)



-- 布尔类型 nil 和 false 为假，其他值均为真，0和空字符串就是真
local a = true
local b = 0
local c = nill

if a then
  print("a") -- a
else
  print("not a")
end

if b then
  print("b") -- b
else
  print("not b")
end

if c then
  print("c")
else
  print("not c") -- not c
end


-- 数字 number
local order = 3.90
local score = 98.01
print(math.floor( order ))
print(math.ceil( score ))\



-- string 字符串
-- 1. 使用单引号， 使用双引号
local str1 = 'hello world'
local str2 = "hello lua"

-- 长括号 [[]] 括起来的方式定义，也可以在[[ 间插入 n 个等号定义第n级长括号
local str3 = [["add \n name", 'hello']]
local str4 = [=[string have a [[ ]].]=]

print(str1)
print(str2)
print(str3)
print(str4)

-- 内容相同的 lua 字符串不会占用多分存储空间

-- table 表，Table 类型实现了一种抽象的 关联数组，
-- 索引通常是字符串 string 或 number 类型，也可以是处理 nil 外的任何类型的值

local corp = {
  web = "www.google.com", -- 索引为字符串
  telephone = "123456",
  staff = { "jack", 'scott', 'grary' }, -- 索引为字符串，值也为一个表
  10086, -- 相当于 [1] = 10086
  10010, -- 相当于 [2] = 10010, 此时索引为数字
  [10] = 360, -- 直接把数字索引给出
  ['city'] = 'beijin' -- 索引为字符串
}

print(corp.web)
print(corp['telephone'])
print(corp[2])
print(corp['city'])
print(corp[10])

]===]--

-- function 函数 也是一种数据类型，可以当成参数传递给其他函数，还可以作为函数的返回值
local function foo()
  print("in the function")
  local x = 10
  local y = 20
  return x + y
end

local a = foo -- 把函数赋值给变量

print(a())